Termination w.r.t. Q of the following Term Rewriting System could be proven:

Q restricted rewrite system:
The TRS R consists of the following rules:

rev(nil) → nil
rev(.(x, y)) → ++(rev(y), .(x, nil))
car(.(x, y)) → x
cdr(.(x, y)) → y
null(nil) → true
null(.(x, y)) → false
++(nil, y) → y
++(.(x, y), z) → .(x, ++(y, z))

Q is empty.


QTRS
  ↳ AAECC Innermost

Q restricted rewrite system:
The TRS R consists of the following rules:

rev(nil) → nil
rev(.(x, y)) → ++(rev(y), .(x, nil))
car(.(x, y)) → x
cdr(.(x, y)) → y
null(nil) → true
null(.(x, y)) → false
++(nil, y) → y
++(.(x, y), z) → .(x, ++(y, z))

Q is empty.

We have applied [15,7] to switch to innermost. The TRS R 1 is

car(.(x, y)) → x
cdr(.(x, y)) → y
++(nil, y) → y
++(.(x, y), z) → .(x, ++(y, z))
rev(nil) → nil
rev(.(x, y)) → ++(rev(y), .(x, nil))

The TRS R 2 is

null(nil) → true
null(.(x, y)) → false

The signature Sigma is {true, false, null}

↳ QTRS
  ↳ AAECC Innermost
QTRS
      ↳ DependencyPairsProof

Q restricted rewrite system:
The TRS R consists of the following rules:

rev(nil) → nil
rev(.(x, y)) → ++(rev(y), .(x, nil))
car(.(x, y)) → x
cdr(.(x, y)) → y
null(nil) → true
null(.(x, y)) → false
++(nil, y) → y
++(.(x, y), z) → .(x, ++(y, z))

The set Q consists of the following terms:

rev(nil)
rev(.(x0, x1))
car(.(x0, x1))
cdr(.(x0, x1))
null(nil)
null(.(x0, x1))
++(nil, x0)
++(.(x0, x1), x2)


Using Dependency Pairs [1,13] we result in the following initial DP problem:
Q DP problem:
The TRS P consists of the following rules:

REV(.(x, y)) → ++1(rev(y), .(x, nil))
REV(.(x, y)) → REV(y)
++1(.(x, y), z) → ++1(y, z)

The TRS R consists of the following rules:

rev(nil) → nil
rev(.(x, y)) → ++(rev(y), .(x, nil))
car(.(x, y)) → x
cdr(.(x, y)) → y
null(nil) → true
null(.(x, y)) → false
++(nil, y) → y
++(.(x, y), z) → .(x, ++(y, z))

The set Q consists of the following terms:

rev(nil)
rev(.(x0, x1))
car(.(x0, x1))
cdr(.(x0, x1))
null(nil)
null(.(x0, x1))
++(nil, x0)
++(.(x0, x1), x2)

We have to consider all minimal (P,Q,R)-chains.

↳ QTRS
  ↳ AAECC Innermost
    ↳ QTRS
      ↳ DependencyPairsProof
QDP
          ↳ EdgeDeletionProof

Q DP problem:
The TRS P consists of the following rules:

REV(.(x, y)) → ++1(rev(y), .(x, nil))
REV(.(x, y)) → REV(y)
++1(.(x, y), z) → ++1(y, z)

The TRS R consists of the following rules:

rev(nil) → nil
rev(.(x, y)) → ++(rev(y), .(x, nil))
car(.(x, y)) → x
cdr(.(x, y)) → y
null(nil) → true
null(.(x, y)) → false
++(nil, y) → y
++(.(x, y), z) → .(x, ++(y, z))

The set Q consists of the following terms:

rev(nil)
rev(.(x0, x1))
car(.(x0, x1))
cdr(.(x0, x1))
null(nil)
null(.(x0, x1))
++(nil, x0)
++(.(x0, x1), x2)

We have to consider all minimal (P,Q,R)-chains.
We deleted some edges using various graph approximations

↳ QTRS
  ↳ AAECC Innermost
    ↳ QTRS
      ↳ DependencyPairsProof
        ↳ QDP
          ↳ EdgeDeletionProof
QDP
              ↳ DependencyGraphProof

Q DP problem:
The TRS P consists of the following rules:

REV(.(x, y)) → ++1(rev(y), .(x, nil))
REV(.(x, y)) → REV(y)
++1(.(x, y), z) → ++1(y, z)

The TRS R consists of the following rules:

rev(nil) → nil
rev(.(x, y)) → ++(rev(y), .(x, nil))
car(.(x, y)) → x
cdr(.(x, y)) → y
null(nil) → true
null(.(x, y)) → false
++(nil, y) → y
++(.(x, y), z) → .(x, ++(y, z))

The set Q consists of the following terms:

rev(nil)
rev(.(x0, x1))
car(.(x0, x1))
cdr(.(x0, x1))
null(nil)
null(.(x0, x1))
++(nil, x0)
++(.(x0, x1), x2)

We have to consider all minimal (P,Q,R)-chains.
The approximation of the Dependency Graph [13,14,18] contains 2 SCCs with 1 less node.

↳ QTRS
  ↳ AAECC Innermost
    ↳ QTRS
      ↳ DependencyPairsProof
        ↳ QDP
          ↳ EdgeDeletionProof
            ↳ QDP
              ↳ DependencyGraphProof
                ↳ AND
QDP
                    ↳ QDPOrderProof
                  ↳ QDP

Q DP problem:
The TRS P consists of the following rules:

++1(.(x, y), z) → ++1(y, z)

The TRS R consists of the following rules:

rev(nil) → nil
rev(.(x, y)) → ++(rev(y), .(x, nil))
car(.(x, y)) → x
cdr(.(x, y)) → y
null(nil) → true
null(.(x, y)) → false
++(nil, y) → y
++(.(x, y), z) → .(x, ++(y, z))

The set Q consists of the following terms:

rev(nil)
rev(.(x0, x1))
car(.(x0, x1))
cdr(.(x0, x1))
null(nil)
null(.(x0, x1))
++(nil, x0)
++(.(x0, x1), x2)

We have to consider all minimal (P,Q,R)-chains.
We use the reduction pair processor [13].


The following pairs can be oriented strictly and are deleted.


++1(.(x, y), z) → ++1(y, z)
The remaining pairs can at least be oriented weakly.
none
Used ordering: Combined order from the following AFS and order.
++1(x1, x2)  =  x1
.(x1, x2)  =  .(x1, x2)

Lexicographic Path Order [19].
Precedence:
trivial

The following usable rules [14] were oriented: none



↳ QTRS
  ↳ AAECC Innermost
    ↳ QTRS
      ↳ DependencyPairsProof
        ↳ QDP
          ↳ EdgeDeletionProof
            ↳ QDP
              ↳ DependencyGraphProof
                ↳ AND
                  ↳ QDP
                    ↳ QDPOrderProof
QDP
                        ↳ PisEmptyProof
                  ↳ QDP

Q DP problem:
P is empty.
The TRS R consists of the following rules:

rev(nil) → nil
rev(.(x, y)) → ++(rev(y), .(x, nil))
car(.(x, y)) → x
cdr(.(x, y)) → y
null(nil) → true
null(.(x, y)) → false
++(nil, y) → y
++(.(x, y), z) → .(x, ++(y, z))

The set Q consists of the following terms:

rev(nil)
rev(.(x0, x1))
car(.(x0, x1))
cdr(.(x0, x1))
null(nil)
null(.(x0, x1))
++(nil, x0)
++(.(x0, x1), x2)

We have to consider all minimal (P,Q,R)-chains.
The TRS P is empty. Hence, there is no (P,Q,R) chain.

↳ QTRS
  ↳ AAECC Innermost
    ↳ QTRS
      ↳ DependencyPairsProof
        ↳ QDP
          ↳ EdgeDeletionProof
            ↳ QDP
              ↳ DependencyGraphProof
                ↳ AND
                  ↳ QDP
QDP
                    ↳ QDPOrderProof

Q DP problem:
The TRS P consists of the following rules:

REV(.(x, y)) → REV(y)

The TRS R consists of the following rules:

rev(nil) → nil
rev(.(x, y)) → ++(rev(y), .(x, nil))
car(.(x, y)) → x
cdr(.(x, y)) → y
null(nil) → true
null(.(x, y)) → false
++(nil, y) → y
++(.(x, y), z) → .(x, ++(y, z))

The set Q consists of the following terms:

rev(nil)
rev(.(x0, x1))
car(.(x0, x1))
cdr(.(x0, x1))
null(nil)
null(.(x0, x1))
++(nil, x0)
++(.(x0, x1), x2)

We have to consider all minimal (P,Q,R)-chains.
We use the reduction pair processor [13].


The following pairs can be oriented strictly and are deleted.


REV(.(x, y)) → REV(y)
The remaining pairs can at least be oriented weakly.
none
Used ordering: Combined order from the following AFS and order.
REV(x1)  =  REV(x1)
.(x1, x2)  =  .(x1, x2)

Lexicographic Path Order [19].
Precedence:
.2 > REV1

The following usable rules [14] were oriented: none



↳ QTRS
  ↳ AAECC Innermost
    ↳ QTRS
      ↳ DependencyPairsProof
        ↳ QDP
          ↳ EdgeDeletionProof
            ↳ QDP
              ↳ DependencyGraphProof
                ↳ AND
                  ↳ QDP
                  ↳ QDP
                    ↳ QDPOrderProof
QDP
                        ↳ PisEmptyProof

Q DP problem:
P is empty.
The TRS R consists of the following rules:

rev(nil) → nil
rev(.(x, y)) → ++(rev(y), .(x, nil))
car(.(x, y)) → x
cdr(.(x, y)) → y
null(nil) → true
null(.(x, y)) → false
++(nil, y) → y
++(.(x, y), z) → .(x, ++(y, z))

The set Q consists of the following terms:

rev(nil)
rev(.(x0, x1))
car(.(x0, x1))
cdr(.(x0, x1))
null(nil)
null(.(x0, x1))
++(nil, x0)
++(.(x0, x1), x2)

We have to consider all minimal (P,Q,R)-chains.
The TRS P is empty. Hence, there is no (P,Q,R) chain.